package _09_高频题;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * https://leetcode-cn.com/problems/lru-cache/
 *
 * @Author: haogege
 * @Date: 2021/9/3
 */
// 最近最少使用算法，使用map保存数据，因为的key-value, 如果使用另一种数据结果存储要淘汰的元素，者首先需要搜索，可能达不到o(1)
public class LRUCache2 {

    private Map<Integer, Integer> map;

    private int capacity;

    public LRUCache2(int capacity) {
        map = new LinkedHashMap<Integer, Integer>(capacity, 0.75f, true) {
            @Override
            protected boolean removeEldestEntry(Map.Entry eldest) {
                return map.size() > capacity;
            }
        };
    }

    public int get(int key) {
        return map.getOrDefault(key, -1);
    }

    public void put(int key, int value) {
        map.put(key, value);
    }

}
